#!/bin/sh

ORIG_NVM_DIR="${NVM_DIR}"
TMP_DIR=''

cleanup () {
  case "${TMP_DIR}" in
    /*) rm -rf "${TMP_DIR}" ;;
  esac
  NVM_DIR="${ORIG_NVM_DIR}"
  export NVM_DIR
}

die () { echo "$@" ; cleanup ; exit 1; }

: nvm.sh
\. ../../../nvm.sh

\. ../../common.sh

TMP_DIR="$(mktemp -d)"
NVM_DIR="${TMP_DIR}/nvm"
export NVM_DIR
mkdir -p "${NVM_DIR}" || die 'could not create NVM_DIR'
unset NVM_ONLY

for VERSION in v26.12.1 v27.0.0 v27.0.0-alpha.1.1.1 v27.0.0-alpha.1.1.10 v27.0.0-alpha.1.2.0 v27.0.0-alpha.10.0.0 v27.0.0-alpha.20.0.10; do
  mkdir -p "${NVM_DIR}/versions/node/${VERSION}/bin" || die "fake node ${VERSION} could not be made"
  make_echo "${NVM_DIR}/versions/node/${VERSION}/bin/node" "${VERSION}"
  nvm_is_version_installed "${VERSION}" || die "fake node ${VERSION} is not installed"
done

check () {
  EXPECTED="$1"
  shift
  OUTPUT="$(nvm_ls "$@" | nvm_grep -v '^system' | tr '\n' ' ')"
  [ "_${OUTPUT}" = "_${EXPECTED}" ] || die "nvm_ls $* (NVM_ONLY=${NVM_ONLY-}) printed >${OUTPUT}<, expected >${EXPECTED}<"
}

check 'v26.12.1 v27.0.0 '
check 'v27.0.0 ' 27
check 'N/A ' v27.0.0-alpha.1.1.1

NVM_ONLY=alpha
check 'v27.0.0-alpha.1.1.1 v27.0.0-alpha.1.1.10 v27.0.0-alpha.1.2.0 v27.0.0-alpha.10.0.0 v27.0.0-alpha.20.0.10 '
check 'v27.0.0-alpha.1.1.1 ' v27.0.0-alpha.1.1.1
check 'v27.0.0-alpha.1.1.1 v27.0.0-alpha.1.1.10 ' v27.0.0-alpha.1.1
check 'v27.0.0-alpha.1.1.1 v27.0.0-alpha.1.1.10 v27.0.0-alpha.1.2.0 ' v27.0.0-alpha.1
check 'v27.0.0-alpha.10.0.0 ' v27.0.0-alpha.10
check 'N/A ' v27.0.0-alpha.20.0.1

NVM_ONLY='alpha,lts,non-lts,iojs'
check 'v26.12.1 v27.0.0-alpha.1.1.1 v27.0.0-alpha.1.1.10 v27.0.0-alpha.1.2.0 v27.0.0-alpha.10.0.0 v27.0.0-alpha.20.0.10 v27.0.0 '
unset NVM_ONLY

cleanup
